/*
*  Copyright 2019-2020 Zheng Jie
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*  http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/
package com.dejax.repository;

import com.dejax.domain.BaseSysAppinfo;
import com.dejax.service.dto.BaseSysAppinfoQueryCriteria;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.lang.Nullable;

/**
* @website https://el-admin.vip
* @author Richer
* @date 2021-12-23
**/
public interface BaseSysAppinfoRepository extends JpaRepository<BaseSysAppinfo, String>, JpaSpecificationExecutor<BaseSysAppinfo> {

    @Query(value = "SELECT appinfo.*,projinfo.projname FROM base_sys_appinfo appinfo " +
            "left join base_sys_projinfo projinfo on  appinfo.projid =projinfo.projid  WHERE " +
                    " IF( :#{#param.appname} IS NOT null, appinfo.appname= :#{#param.appname},  1=1) "
                    + "AND appinfo.flag = 0  "
                    + "ORDER BY ?#{#pageable}",
            countQuery = "SELECT count(*) FROM base_sys_appinfo appinfo" +
                    " IF( :#{#param.appname} IS NOT null, appinfo.appname= :#{#param.appname},  1=1) "
                    + "AND appinfo.flag = 0 ",
            nativeQuery=true)
    Page<BaseSysAppinfo> queryMyAllData(BaseSysAppinfoQueryCriteria param, Pageable pageable);


    //通过appname  projid 查重
    @Query(value = "select * from base_sys_appinfo where  (appname = ?1 or syscode = ?2 ) and projid = ?3 and flag = 0 ",
            nativeQuery=true)
    BaseSysAppinfo findOneByAppnameSyscodeProjid(String appname,String syscode,String projid);





}